API di pianificazione anticipata
L'API Plan-ahead è destinata all'invio di programmi in anticipo. Per il controllo dal vivo, consulta Controllo MQTT dal vivo invece
Cosa ti serve
- Un nome utente e una password API. Puoi utilizzare il tuo account Insights per questo, oppure richiedere un account API inviando un'email a support@eniris.be, menzionando chiaramente il numero di serie del tuo dispositivo.
- Ambiente di sviluppo Python (o qualsiasi altro client MQTT). Questa guida utilizza un esempio di base scritto in Python per aiutarti a iniziare con MQTT e l'invio di comandi. Raccomandiamo di utilizzare Python per la facilità d'uso, ma qualsiasi altro client MQTT è supportato.
Configurazione iniziale (Punto di partenza per nuovi utenti)
1. Trova gli ID dei dispositivi che desideri controllare
L'ID del dispositivo (chiamato anche nodeId) è un identificatore unico per ciascun dispositivo nel nostro sistema ed è utilizzato quando si inviano comandi ai dispositivi.
Al momento, il modo più semplice per ottenere i tuoi ID è navigare su:
http://<CONTROLLER_IP>/debugger
Espandi la casella 'Metadata' e annota ciascun nodeId di tutti i dispositivi che desideri controllare. Avrai bisogno di questi ID in un passaggio successivo.

2. Aggiungi i tuoi dispositivi
Accedi all'interfaccia di messa in servizio e assicurati che i dispositivi siano aggiunti al Sofar EMS.
3. Aggiungi il segnale di API esterno




4. Inserisci il token del raccoglitore
Inserisci semplicemente il numero di serie del Sofar EMS qui e fai clic su invia.
5. Seleziona i dispositivi da includere
In questa pagina, hai l'opzione di includere/escludere dispositivi per il controllo remoto. Assicurati di selezionare tutte le caselle di controllo dei dispositivi che desideri includere.

6. La fonte dei dati è stata aggiunta
L'interfaccia di controllo remoto è stata ora attivata sul Sofar EMS. Puoi ora iniziare a inviare i tuoi comandi ai dispositivi.
Non dimenticare di impostare un regime di fallback sul Sofar EMS! È necessario configurare una modalità di controllo locale oltre ai segnali API esterni che invii. Il controllo locale viene utilizzato come fallback nel caso in cui il Sofar EMS perda la connessione a Internet o ci siano altre cause che impediscono al segnale API di raggiungere il Sofar EMS.
Invia comandi di controllo remoto utilizzando Python
Di seguito, c'è un frammento di codice Python su come controllare solare o batteria.
Controlla il documento Guida all'applicazione - Punti di impostazione remoti per una spiegazione più completa con tutte le politiche.
Pacchetto richiesto:
pip install eniris
# %% Imports
from eniris import ApiDriver
from eniris.point import Point
from eniris.point.writer import (PointDuplicateFilter, DirectPointToTelemessageWriter)
from eniris.telemessage.writer import PooledTelemessageWriter
from datetime import datetime, timezone
# %% Constants
COMMAND_UNTIL = '2024-04-16T10:26:00+02:00' # YYYY-MM-DDTHH:MM:SS+00:00
SN = '<REPLACE>'
COMMAND = fields = {'policy': 2, 'powerSetpoint_W': 0.0} # 0: Default (self-consumption); 2: Follow-setpoint
# %% Start curtailment
curtail_until = datetime.fromisoformat(COMMAND_UNTIL).astimezone(timezone.utc)
print(f'Following command until: {curtail_until}')
apiUsername = "<REPLACE>"
apiPassword = "<REPLACE>"
# Create an API drivers and a point writer with the desired functionality
driver = ApiDriver(apiUsername, apiPassword)
writer = PointDuplicateFilter(
DirectPointToTelemessageWriter(
PooledTelemessageWriter(
authorizationHeaderFunction=driver.accesstoken,
params={"u": SN},
)
)
)
namespace = {'database': 'SGC', 'retentionPolicy': 'rp_one_s'}
tags = {
"serialNr": SN,
"nodeId": '<REPLACE>',
}
writer.writePoints([Point(namespace, 'remoteControlSignals', curtail_until, tags, fields)])
writer.flush()
print('Dispatched')
Fai particolare attenzione a:
- L' 'COMMAND_UNTIL': Questo è un timestamp consapevole del fuso orario che indica l'ora di fine del tuo comando.
- Il 'COMMAND': Questo dovrebbe essere cambiato a seconda del comando che desideri eseguire.
- Ad esempio: per le batterie, la politica 2 con powerSetpoint_W a 1000 caricherà la batteria a 1 kW.
- Per il solare, la politica 2 con powerSetpoint_W a 0 disabiliterà la produzione solare.
- Dopo che il tuo comando è terminato, tornerà automaticamente al controllo predefinito (come configurato nel Sofar EMS).
- (politiche più avanzate sono supportate, ma non sono ancora state aggiunte a questa guida)
- La variabile 'tags': Questa dovrebbe essere modificata in base al numero di serie del Sofar EMS, dove nodeId dovrebbe essere impostato sull'ID del dispositivo che è stato estratto in un passaggio precedente di questo tutorial.
Controlla il documento Guida all'applicazione - Punti di impostazione remoti per una spiegazione più completa con tutte le politiche.